gbfile: Fix gbfungetc. Thanx to Gabriel Weisz.
authoroliskoli <oliskoli>
Mon, 9 Jul 2007 17:15:51 +0000 (17:15 +0000)
committeroliskoli <oliskoli>
Mon, 9 Jul 2007 17:15:51 +0000 (17:15 +0000)
gbfile.c

index affa0066a538ab172d73b5e5bac99a1fe3eb98ab..3b3489e2a2e62f21d6d01565d8b84b5cb0663e05 100644 (file)
--- a/gbfile.c
+++ b/gbfile.c
@@ -565,18 +565,25 @@ gbfeof(gbfile *file)
 int
 gbfungetc(const int c, gbfile *file)
 {
-       int r = -1;
+       int res;
+
        if (file->gzapi) {
 #if !ZLIB_INHIBITED
-               file->back = -1;
+               if (file->back == -1) {
+                       file->back = c;
+                       res = c;
+               }
+               else {
+                       fatal(MYNAME ": Cannot store more than one byte back!\n");
+               }
 #else
                fatal(NO_ZLIB);
 #endif
        }
        else {
-               r = ungetc(c, file->handle.std);
+               res = ungetc(c, file->handle.std);
        }
-       return r;
+       return res;
 }
 
 /* GPSBabel 'file' enhancements */